package info.openlvb.openface.client.handler;

import info.openlvb.openface.client.service.GraphService;
import info.openlvb.openface.client.service.GraphServiceAsync;

import java.util.Date;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.gwtext.client.util.DateUtil;
import com.gwtext.client.widgets.MessageBox;

public class ApplyPersoGraphListenner implements ClickHandler{
	private final GraphServiceAsync GraphService = GWT.create(GraphService.class);
	String date1;
	String date2;
	String textDate1;
	String textDate2;
	String startTime;
	String endTime;
	String originIMG;
	String errorMsg="";

	public ApplyPersoGraphListenner(){


	}
	public void onClick(ClickEvent event) {
		this.date1=CallPersoGraphListenner.getDateBox1().getValue();
		this.date2=CallPersoGraphListenner.getDateBox2().getValue();
		this.startTime=CallPersoGraphListenner.getStartTime().getText();
		this.endTime=CallPersoGraphListenner.getEndTime().getText();
		this.originIMG=CallPersoGraphListenner.getOrigineImg();
		
		if(testDateAndTime(date1,date2,startTime,endTime)){

			String[] arg = {originIMG,date1,date2,startTime,endTime};
			GraphService.img(arg,new AsyncCallback<Boolean>() {

				@Override
				public void onFailure(Throwable caught) {
					// TODO Auto-generated method stub

				}

				@Override
				public void onSuccess(Boolean result) {
					// TODO Auto-generated method stub
					if(result){
						if(originIMG.equals("cpu")){
							CallPersoGraphListenner.getIMG().setUrl("images/cpu.png?"+new Date().getTime());	
						}
						else if(originIMG.equals("mem")){
							CallPersoGraphListenner.getIMG().setUrl("images/mem.png?"+new Date().getTime());
						}
						else if(originIMG.equals("net")){
							CallPersoGraphListenner.getIMG().setUrl("images/net.png?"+new Date().getTime());
						}
						else System.out.println("erreur de type");
					}
					else System.out.println("erreur ApplyPersoGraph");
				}

			});
		}
		else{
			MessageBox.alert("Les paramètres sont incorrectes :"+errorMsg);
			errorMsg = "";
		}
	}
	
	private boolean testDateAndTime(String dateA, String dateB,
			String startTimeA, String endTimeA) {
		if(Integer.parseInt(dateA.substring(6,8))>Integer.parseInt(dateB.substring(6,8))){
			errorMsg+="L'année de début est supérieure à l'année de fin.";
			return false;
		}
		else if(Integer.parseInt(dateA.substring(3,5))>Integer.parseInt(dateB.substring(3,5))){
			errorMsg+="Le mois de début est supérieur au mois de fin.";
			return false;
		}
		else if(Integer.parseInt(dateA.substring(0,2))>Integer.parseInt(dateB.substring(0,2))){
			errorMsg+="Le jour de début est supérieur au jour de fin.";
			return false;
		}
		else if(Integer.parseInt(startTimeA.substring(3,5))>Integer.parseInt(endTimeA.substring(3,5))){
			errorMsg+="Les heures de début sont supérieures aux heures de fin.";
			return false;
		}
		else if(Integer.parseInt(startTimeA.substring(0,2))>Integer.parseInt(endTimeA.substring(0,2))){
			errorMsg+="Les minutes de début sont supérieures aux minutes de fin.";
			return false;
		}
		return true;
	}
}


